package tech.pdai.springframework.bean;

import lombok.Data;
import org.springframework.beans.factory.BeanNameAware;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

@Data
public class Car implements InitializingBean, DisposableBean, BeanNameAware {

    private String beanName;

    public Car() {
        System.out.println("这是一个car的构造方法");
    }

    public void myInit() {
        System.out.println("这是一个自定义init方法");
    }

    public void myDestroy() {
        System.out.println("这是一个自定义destroy方法");
    }

    @Override
    public void afterPropertiesSet() throws Exception {
        System.out.println("这是一个InitializingBean的init方法");
    }

    @Override
    public void destroy() throws Exception {
        System.out.println("这是一个DisposableBean的destroy方法");
    }

    @PostConstruct
    public void jsrInit() {
        System.out.println("这是一个JSR250规范定义的init方法");
    }

    @PreDestroy
    public void jsrDestroy() {
        System.out.println("这是一个JSR250规范定义的destroy方法");
    }

    @Override
    public void setBeanName(String s) {
        System.out.println("这是一个BeanNameAware的set方法:"+s);
        this.beanName = s;
    }
}
